import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

//通过这个代码，在数据库的表中插入一行记录
public class Demo {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学号：");
        int id = scanner.nextInt();
        scanner.nextLine();
        System.out.println("请输入姓名：");
        String name = scanner.nextLine();
    //1、先创建datesource
        DataSource dataSource = new MysqlDataSource();//来自于mysql的驱动包
        //设置url（找到当前位置）
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/xmy4?characterEncoding=utf8&useSSL=false");
         //设置用户名
        ((MysqlDataSource)dataSource).setUser("root");//root是mysql自带默认用户
        //设置密码
        ((MysqlDataSource)dataSource).setPassword("5028");
        //上面这些是准备工作

        //2、和数据库服务器建立连接，连接好之后才能进行后序的请求和响应、交互的操作
        Connection connection = dataSource.getConnection();
        //3、构造sql(代码中的sql不需要;)
      // String sql = "insert into student values(1,'张三')";
        //String sql = "delete from student where name = '张三'";
       // String sql = "update student set name = '张三' where id = 100";
        // String sql = "insert into student values("+ id +",'"+ name +"')";
        String sql = "insert into student values(?,?)";//?作为占位符号
        //先解析检查sql，解析完毕后，也会得到结构化数据，直接把解析好的数据发给数据库服务器让服务器省下了解析的工作
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        System.out.println("sql="+statement);
        //4、把sql指令发给服务器,放回值是一个整数，表示影响到的行数
        int n = statement.executeUpdate();//delete,insert,update写操作
        System.out.println(n);
        //statement.executeQuery();//select读操作
        //5、释放资源，关闭连接,后获取到的资源，先释放
        statement.close();
        connection.close();
    }
}
